package com.server.service;

import com.server.Untils.MybatisClass;
import com.server.Untils.ResponseMessage;
import com.server.entity.UserLogins;
import com.server.entity.Users;
import com.server.example.UserLoginsExample;
import com.server.mapper.UserLoginsMapper;
import org.apache.ibatis.session.SqlSession;

import java.util.Date;
import java.util.List;

/**
 * @author Admin
 */
public class UserLoginService {

    /**
     * 用户登录的登录日志新建
     * 调用方法
     * 使用规则: 当登录成功后新建一条登录的记录
     * @param userLogins 用户登录的基本信息
     */
    private void insertUserLogins(UserLogins userLogins) {
        SqlSession sqlSession = MybatisClass.getSqlSession();
        UserLoginsMapper userLoginsMapper = sqlSession.getMapper(UserLoginsMapper.class);
        try {
            userLoginsMapper.insertSelective(userLogins);
        }catch (Exception e) {
            System.out.println(ResponseMessage.ANOTHER_ERROR);
        }finally {
            sqlSession.commit();
            sqlSession.close();
        }
    }

    /**
     * 用户登录日志添加实现
     * @param userId 用户id
     */
    public void insertUserLogins(Users userId, String message){
        UserLogins userLogins = new UserLogins();
        userLogins.setUserId(userId.getId());
        userLogins.setUserName(userId.getUserName());
        userLogins.setUserEmail(userId.getUserEmail());
        userLogins.setUserLoginTime(new Date());
        userLogins.setMessage(message);
        this.insertUserLogins(userLogins);
    }

    /**
     * 得到登录记录/得到所有用户的登录记录
     * 调用方法 new UserLoginsService().getList(list)
     * @param userList 当我传输的 userList 为空时候(得到登录记录)，不为空时候(得到所有用户的登录记录)
     * @return 得到登录记录/得到所有用户的登录记录
     */
    public List<UserLogins> getList(List<Integer> userList){
        SqlSession sqlSession = MybatisClass.getSqlSession();
        UserLoginsMapper userLoginsMapper = sqlSession.getMapper(UserLoginsMapper.class);
        UserLoginsExample userLoginsExample = new UserLoginsExample();
        if (userList.size() > 0) {
            userLoginsExample.createCriteria().andUserIdIn(userList);
        }else {
            userLoginsExample.createCriteria().andIdIsNotNull();
        }
        List< UserLogins> userLoginsList = userLoginsMapper.selectByExample(userLoginsExample);
        sqlSession.close();
        return userLoginsList;
    }
}
